import { MD5, POSTGROUP } from '@/common/util'

const sign = stamp => MD5(stamp + window.atob('RE9VTkVXQGV5ZWUkMjAxOTAzMjE='))
const getIp = $ => window.returnCitySN && window.returnCitySN['cip']

const ssKey = 'MEMBER_LOG_SESSION'
const logKey = ($ => {
  let now = parseInt(performance.timeOrigin)
  let key = sessionStorage.getItem(ssKey) || now
  console.log('session key', key)
  // 30分过期, 30 * 60 * 60 * 1000 = 108000000
  if (!(key && now - key < 108000000)) key = +new Date()
  sessionStorage.setItem(ssKey, key)
  return key
})()

const getUd = $ => JSON.parse(localStorage.getItem('currentUser') || '{}').uid || ''

const getUa = $ => {
  let ua = []
  for (const k in ENV.ua) {
    const u = ENV.ua[k];
    if (u) ua.push(k)
  }
  return ua.join(',')
}

/**
 *
  ud	登录用户id	N	String
  // dd	设备id	N	String
  // ia	广告标识idfa	N	String	ios 需要传
  i	登录ip	N	String
  tl	终端类型	N	String	IOS/Android/H5/小程序
  v	版本号	N	String
  // mt	app市场	N	String	ios:appstore
  ts	时间戳	Y	Int	精确到毫秒
  pp	前一个页面位置	N	String
  cp	当前页面位置	N	String
  e	事件名称	N	String
  p	业务参数	N	String	可为空，反之 json字符串
  ext	扩展字段	N	String
  sig	签名	Y	String	安全验证参数
  tsp	时间戳	Y	String	安全验证参数精确到毫秒
 */
window.$log = ({ e = '', p, ts }) => {
  // if (ENV.debug) return
  let param = {
    ud: getUd(),
    i: getIp(),
    tl: 'H5',
    v: ENV.version,
    ts: ts || +new Date(),
    pp: window._from || '',
    cp: location.pathname,
    e,
    p: (p && JSON.stringify(p)) || '',
    ext: 'sk:' + logKey + ',' + getUa()
  }
  param.tsp = +new Date()
  param.sig = sign(param.tsp)
  if (ENV.debug) console.log('==>$log: ', param)
  else POSTGROUP('/capi/actionlogservice/log/open/addv2', param, 0).catch(e => console.error('    log error: ', e))
}

window.$log.event = {
  enter: 'enter',
  pv: 'pv',
  click: 'click'
}
